1. Technical Field
The present invention relates generally to data processing systems and in particular to video drivers of data processing systems. Still more particularly, the present invention relates to a method, system, and computer program product for dynamically selecting specific video driver resources from a read only bootable medium to support a particular video adapter/card of a data processing system.
2. Description of the Related Art
Data processing systems require hardware and software components to operate. In addition to the basic hardware components, such as the processor and memory, and software components, such as the operating system (OS), typical systems include a visual output mechanism that enables the user to view the applications and processes being run by the processor. Additionally, in order for the data processing system to begin operating, it must complete a boot up procedure by which the various hardware and software components are initialized for operation. For example, during a standard boot procedure, the boot program detects the memory capacity, the processor speed, and the type (or configuration) of Input/Output (I/O) devices, such as a mouse, keyboard and monitor.
Following the detection of these components, various component drivers (i.e., configuration files, etc.) are loaded into the system memory to enable the components to operate correctly. The drivers are computer programs that allow a specific hardware component to communicate with the OS or operating environment of the computer system. For example, a mouse driver is loaded into memory, corresponding to the specific mouse type detected. Also, a video driver is loaded corresponding to the operating characteristics of the video adapter/card detected. These operating characteristics are activated by the video capabilities supported by the OS and made available with the video driver (configuration files, etc.) loaded during boot up.
There presently exists many different types of OS, as well as many different types of display devices/video adapters and corresponding device drivers. Typically, each video adapter requires a unique set of configuration parameters (e.g., color counts and image resolution) and a unique video driver to operate properly. Thus, in most data processing systems, specific adapters are often provided and a corresponding device driver is required to support each hardware component that is connected to the system. With data processing systems utilized as server systems, for example, ServeRAID adapters are typically utilized. These server systems may range from the PC Server family of servers to the more current EServer family. Often, in servers that support these ServeRAID adapters, there is no OS installed on the hard drive and thus, a tool is needed to configure and maintain the ServeRAID adapters during the boot process and beyond. This tool is also required whenever a critical hard drive failure renders the operating system inoperable.
Thus, the ServeRAID configured systems provides an application called the ServeRAID Manager, which has a GUI interface that allows a user to interact with the ServeRAID adapters. The ServeRAID Manager is launched using a bootable CD running the Linux OS. This allows the user to configure the ServeRAID adapters before an operating system is installed on the hard drives or when a hard drive failure renders the operating system unusable.
The Linux OS comprises a graphical user interface (GUI), an X-Window System, and other components. The X-Window system is an open, cross platform, client/server system for managing a windowed graphical user interface in a distributed network.
Normally, when setting up a Linux installation, it is required for the user to choose an XServer that is compatible with the video adapter in the system. For example, if a user is installing X-Windows on a server that contains a S3 Incorporated S3Trio64V+video adapter, the user should configure the XF86—S3 Server since this is the server which works with this video adapter.
Linux makes use of symbolic links which are similar to shortcuts used in the Windows OS of Microsoft Corp. A symlink (symbolic link) is not a useful file by itself but points to another file, which is accessed when the symlink is accessed. Thus, when X-Windows starts, it searches for the file “/etc/X11/X”. This file “points” to the XServer chosen by the user. X-Windows will load the server that /etc/X11/X points to and, therefore, it is important that /etc/X11/X points to the correct XServer. So, for the example above, the user would make /etc/X11/X point to /usr/X11R6/bin/XF86—S3 in order to load the XF86—S3 XServer when X-Windows starts.
The Linux-based boot CD must be able to run on many different servers which are configured using a range of different hardware devices. One such device which differs from server to server is the video adapter/card, which requires a specific video driver to display graphical representations. Many older servers use antiquated video devices, which do not work well with modern software, while newer servers use video adapters with all the latest features and which work well with today's software. The Linux bootable CD must work with all of these video adapters in order to properly boot the system and display the ServeRAID Manager GUI interface to the user. That is, the boot CD should be able to switch video drivers on the fly if the correct driver operation is desired.
However, the Linux boot CD is a read only CD, (i.e., it cannot be written to once manufactured). Thus, it is not possible to change /etc/X11/X symlink once the data has been burned into the CD and this prevents the applicable video driver from being properly selected during the boot process. When booting from a read only Linux CD, the symlink file can only point to a single generic driver or to a driver which may not work for a different video adapter on a different or the same server. Because the symlink file may only point to a single file and the boot CD cannot be written to, current boot CDs provide one generic video driver that is utilized to support the various different servers and video adapters found in the servers. In order to maintain compatibility with older video drivers, the generic driver may run with only 16 colors and VGA resolution (e.g., 640×480). However, with current systems, video adapters and monitors are well suited to display higher color counts and higher resolution in order to present a crisp user interface and a large desktop. A need exists for a way to provide hardware specific drivers and configuration utilities to maximize the display capabilities of each display device that may be encountered.
Previous approaches have attempted to provide hardware specific and/or dynamic driver selection. For example, U.S. Pat. No. 5,325,532 describes a way to generate a boot image based on current system configuration by retrieving device drivers from read only memory of the computer system (i.e., not a Linux boot CD ROM). Additionally, U.S. Pat. No. 5,325,532 describes a way to select and load a video driver based on current video system configuration by utilizing an intermediate video driver and a pass-through mechanism. However, neither of these approaches solves the inherent problem with a Linux read only boot CD or similar boot medium.
The present invention thus recognizes that it would be desirable to enable dynamic selection of an XServer and corresponding configuration files for a video adapter of a data processing system during boot up from a read only boot medium. A read only boot medium for a data processing system that is capable of providing specific, selectable video resources for the video adapter present in the data processing system would be a welcomed improvement. It would be further desirable to provide a method, system and program product by which a symlink file on a read only bootable medium is able to affect the dynamic selection of a particular XServer from a plurality of XServers on the read only boot medium. These and other benefits are provided by the invention described herein.